/**
 * 随机数生成器类，用于生成指定范围内的随机数。
 */
class RNG {
        /**
     * 构造函数，初始化随机数生成器。
     */
    constructor() {
                // 初始化随机数索引，用于跟踪当前使用的随机数位置
                // 将索引重置为 0，以便下次从第一个随机数开始使用
        this.index = 0;
                // 初始化随机数数组，用于存储生成的随机数
        this.elements = [];
    }

        /**
     * 生成一个介于 min 和 max 之间的随机数。
     * 如果内部随机数数组耗尽，会生成一个新的随机数。
     * @param {number} [min=0] - 随机数的最小值，默认为 0。
     * @param {number} [max=1] - 随机数的最大值，默认为 1。
     * @returns {number} 生成的随机数。
     */
    next(min = 0, max = 1) {
                // 如果当前索引超出了随机数数组的长度，生成一个新的随机数
        if (this.index >= this.elements.length) {
                        // 调用外部的 random 函数生成一个新的随机数并添加到数组中
            this.elements.push(random());
        }
                // 根据索引获取随机数，并将其映射到指定的 min 和 max 范围内
        return this.elements[this.index++ % this.elements.length] * (max - min) + min;
    }

        /**
     * 重置随机数生成器的索引，使其从第一个随机数开始重新使用。
     */
    reset() {
                // 初始化随机数索引，用于跟踪当前使用的随机数位置
                // 将索引重置为 0，以便下次从第一个随机数开始使用
        this.index = 0;
    }
}
